#!/usr/bin/perl
#Analisis de los archivos tcpdump.list

use Data::Dumper;

my $entrada1=shift;
my $entrada2=shift;


print "Archivo tcpdump.list: " . $entrada1 . "\n";
open(ARCHIVO,$entrada1);



open(LOG,">log.dat");
open(DATOS,">analisis.dat");
open(HAS,">hash.dat");


my @archivo = <ARCHIVO>;


my %hash;

my %transformar;
my $lin;
my $contador=1;



my $anterior="";
my @hora_anterior;
my $auxi=0;
my @hora;
my @hora_inicio;
my @hora_fin;
my $dur_mayor;
my $cantidad=0;
my @tp_anterior;
my $resto=0;
foreach $lin (@archivo)
{

my @linea = split(" ",$lin);

my @tp=split(",",$linea[10]);


if(lc($tp[0]) ne '-'){


if($anterior eq $tp[0]){

	$auxi=1;
	$cantidad++;

  }else{ 
  	if(lc($tp[0]) ne '-' ){
	
		$hash{$tp_anterior[0]}{int($hora_inicio[0]).":".int($hora_inicio[1]).":".int($hora_inicio[2])}{int($hora_fin[0]).":".int($hora_fin[1]).":".int($hora_fin[2])}{"$tp_anterior[4],$tp_anterior[6]"}{$cantidad}=1;	
		print DATOS int($hora_inicio[0]).":".int($hora_inicio[1]).":".int($hora_inicio[2]).",".int($hora_fin[0]).":".int($hora_fin[1]).":".int($hora_fin[2]).",$tp_anterior[0],$tp_anterior[4],$tp_anterior[6],$cantidad\n";
		$cantidad=0;
		$auxi=0;
	}
  }



@hora  = split(/:/,$linea[2]);

if($auxi==0){

	@hora_inicio=split(/:/,$linea[2]);
	$dur_mayor=-1;
	$cantidad=1;

}

my @fecha = split("/",$linea[1]);
my $horamasuno = $hora[0];
my @duracion = split(/:/,$linea[3]);
my $pOrigen = $linea[5];
my $pDest = $linea[6];
my $iOrigen = formato_ip($linea[7]);
my $iDest = formato_ip($linea[8]);
my $mes=int($fecha[0]);
my $d=int($fecha[1]);
my $h=$horamasuno;
my $m=int($hora[1])+$j;
my $s=int($hora[2])+$k;
my $dur1=int($duracion[0]);
my $dur2=int($duracion[1]);
my $dur3=int($duracion[2]);

my $dur_hora= int($hora[2])+int($hora[1])*60+int($hora[0])*3600;


my $dur_total=$dur1*3600+$dur2*60+$dur3+$dur_hora;

  if($dur_mayor<$dur_total){
	$dur_mayor=$dur_total;

	$hora=int($dur_total/3600);
	$resto=$dur_total%3600;
	$minuto=int($resto/60);
	$segundo=$resto%60;
	


	@hora_fin=split(/:/,"$hora:$minuto:$segundo");


#	@hora_fin=@hora;

  }
print LOG $dur_total." - $tp[0]<<<-\n";
print LOG Dumper(@hora_fin)."\n";

@tp_anterior=@tp;


	$anterior=$tp[0];

}


}

my @claves;
my %h2;
my $k,$l,$m;
my $hora_menor=100000;
my $hora_mayor=-1;
my $hora_inicio;
my $hora_final;
my $hactual;
my $total;
my $ax;
my $aux;
foreach $ataque(keys %hash ){
$total=0;
$hora_menor=100000;
$hora_mayor=-1;
$ax=1;
	foreach my $hinicio ( keys %{ $hash {$ataque} }  ){

		my @hi=split(/:/,$hinicio);

		$h_actual=int($hi[0])*3600+int($hi[1])*60+int($hi[2]);

		if($h_actual<$hora_menor){

			$hora_menor=$h_actual;
			$hora_inicio=$hinicio;

		}
		

		foreach my $hfin (keys %{ $hash {$ataque}{$hinicio}} ){

			my @hf=split(/:/,$hfin);

			$h_actual=int($hf[0])*3600+int($hf[1])*60+int($hf[2]);

			if($h_actual>$hora_mayor){

				$hora_mayor=$h_actual;
				$hora_final=$hfin;

			}

			foreach my $prop (keys %{ $hash {$ataque}{$hinicio} {$hfin}} ){
				foreach my $cont (keys %{ $hash {$ataque}{$hinicio}{$hfin}{$prop} } ){
					if($ax==1){


						$aux=$prop;
						$ax=0;
						print $aux."\n";
					}

					$total+=int($cont);

				}

			}


		}


	}

	my @claves=keys(%{ $hash {$ataque}{$hora_inicio}{$hora_final} }); 

#	print Dumper(@claves);

	print HAS $ataque.",".$hora_inicio.",".$hora_final.",".$aux.",".$total."\n";

}



print "Analisis tcpdump.list terminado\n";




close(ARCHIVO);
close(DATOS);
close(TIPOS);
close(HAS);

sub formato_ip {

  my $lin = shift;
  my @ip = split(/\./,$lin);

  my $primero = int($ip[0]);
  my $segundo = int($ip[1]);
  my $tercero = int($ip[2]);
  my $cuarto  = int($ip[3]);

  my $ip_format= $primero.".".$segundo.".".$tercero.".".$cuarto;
  return $ip_format;

}


